iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0

概述

除了特定的 Exception 之外,在開發時很難一次一個一個去做細部的分類,所以會設定一個全域的 Exception class。

Exeption Class

大部分的 Exception 狀況都會繼承同一個 Exception 這個 class,而 RuntimeException 會繼承到 Exception

所以在建立全域的時候,可以繼承 RuntimeExcption 這個 class

在 exception 中新增 GlobalException 這個 class,在 GlobalException 中輸入下列:

@Order(1)
@ControllerAdvice
public class GlobalExceptionHandler extends RuntimeException
@ExceptionHandler(Excpeion.class)
public ResponseEntity<ErrorDetails> handleGlobalException(Exception exception, WebRequest webRequest){
ErrorDetails errorDetails = new ErrorDetails(new Date(),exception.getMessage(),
webRequest.getDescription(false));

return new ResponseEntity<>(errorDetails, HttpStatus.INTERNAL_SERVER_ERROR);

}

}

@ResponseBody : 將返回(return)的資料放入HTTP Response Body中
@ExceptionHandler(Exception.class): 代表這個例外處理的範圍是所有的Exception.class,所有例外都會歸在Exception類,代表全域的意思

預設是所有的例外都會放在這裡,而其餘的特殊事件則會使用上一篇敘述的方式~

結語

這邊要特別注意,要加上 @Order 這個註釋,表示他的執行順序,而所有的 Exception 都會落到 Global 裡,所以客製化的 Exception 要記得標註成 @Order(0) ,才不會被 Global 覆蓋住。

Exception 的處理在網頁建置中非常重要,才能知道錯誤的原因,並也讓使用者清楚的了解,如此可以增加使用者的體驗等~

今天的紀錄就先到這裡了~我們明天見~


上一篇
Day20 Java Spring API 實作 - Exception 處理 Part1
下一篇
Day22 Java Spring API 實作 - 登入功能
系列文
Java Spring + Vue 甘苦學習路 前後端分離之 Blog 實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言